技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2023 iThome 鐵人賽
DAY
24
0
AI & Data
AI白話文運動系列之「A!給我那張Image!」
系列 第
24
篇
CNN經典論文導讀(五)--DenseNet
15th鐵人賽
理工哈士奇嗷嗚嗷嗚
2023-10-09 22:46:05
662 瀏覽
分享至
前言
今天沒意外的話會是這個系列中最後一篇經典論文探討了,雖然我們前段時間花了一些篇幅討論Autoencoder架構,但其實這篇論文的概念更像是ResNet,所以如果忘記的人可以先回顧一下ResNet的內容。
先備知識
對捲積運算有基礎的認識(可以回顧:
https://ithelp.ithome.com.tw/articles/10323076
)
了解甚麼是捲積神經網路(Convolutional Neural Network)(可以回顧:
https://ithelp.ithome.com.tw/articles/10323077
)
知道ResNet架構長甚麼樣(可以回顧:
https://ithelp.ithome.com.tw/articles/10333499
;
https://ithelp.ithome.com.tw/articles/10333931
)
看完今天的內容你可能會知道......
Dense connection是甚麼架構
DenseNet與ResNet差在哪裡
DenseNet有甚麼優勢
一、更強更猛的ResNet?
論文
https://arxiv.org/pdf/1608.06993.pdf
我們在介紹ResNet時有提過,通過短路連接(Shortcut connection),可以讓更多的資訊往後傳遞,有助於利用最佳化方式進行反向傳遞,可以建立出更深層的模型。2017年被提出了DenseNet這篇論文也是類似的想法,不過他的連接方式比起ResNet來的更加暴力直接。為甚麼這麼說呢?我們試想一下,如果只有前後層之間使用短路連接的效果還不錯的話,那麼我能不能多連接幾層?這樣是不是就可以讓更多層的資訊往後傳遞,也可以促進資訊的融合?
是的沒錯!DenseNet就是使用這樣的結構(如下圖所示):
圖中的紅色、綠色、紫色、黃色與橘色代表的是不同捲積層輸出的特徵圖,可以看到,這些特徵圖都被直接往後拉,跟別的特徵圖結合,這就是DenseNet提出的「密集連接(Dense connection)」,如果只有前後層之間的連接的話,就是ResNet中的Residual Block架構,DenseNet連接了更多更密集的層(會連接除了自己以外前面所有的層),所以才會是
Dense
connection。
另一點和ResNet的不同之處在於融合特徵圖資訊的方式。在Residual Block中,我們是如何結合自己的特徵圖與拉過來的特徵圖呢?答案是直接加在一起,所以會要求Residual跟Shortcut的輸出結果需要圖片大小與通道數都要一致。可是DenseNet不是用加的,是直接把特徵「疊」在一起,所以只需要圖片大小相同即可,經過結合之後通道數量會增加,換句話說就是可以有更多的特徵資訊可以用。
這正是DenseNet的一大特點,如果我好不容易提取出來的特徵只使用一層的話,會不會太浪費了?在CNN架構中,每一層的捲積層都會提取出不同的特徵,傳統上這些特徵只會被當層下一層捲積層的輸入資料來處理,可是,從另外一個角度思考,如果今天要完成一個分類任務的話,我應該盡可能的考慮所有的特徵,讓模型自己去學誰比較重要,而不是在傳遞的過程當中逐步萃取資訊,這樣我可以有更多的資訊協助判斷。DenseNet這樣的結構就是讓每一層都可以接受到之前學到的所有特徵,這被稱為「Feature reuse」,也就是我們重新使用之前的特徵。
註記:這邊說的疊其實用專業的話來說是指concat這個運算(可以參考:
https://pytorch.org/docs/stable/generated/torch.cat.html
)
二、DesneNet架構
聊完了核心概念,接著讓我們來看看DenseNet的整體架構吧!
整體模型結構可以分成兩個部分:「Dense Block」與「Transition Layer」,前者正是我們剛剛花了一些時間討論的結構,後者的話目的是在「調整特徵圖大小」,在CNN中,我們會逐步將特徵圖的面積縮小,讓捲積核可以提取到不同尺度的特徵,可是,如果圖片大小不同的話,就沒辦法把不同層輸出的特徵圖「疊」在一起了,所以我們需要使用Transition Layer來處理這件事。簡單來說,在Dense Block中的每一個捲積層都會接受之前所有特徵圖的資訊,而這些資訊會由Dense Block中的最後一個捲積層負責整合並往下傳遞,而DesneNet Block彼此之間因為特徵圖大小不同,所以在往下傳遞之前須經由Transition Layer調整。
說了這麼多,如果還記得ResNet的人應該可以感覺到,DenseNet透過更密集更緊湊的方式,讓它在參數量與計算量更少的情況下,依然能有優異的表現,這也是DenseNet最突出的地方。
三、總結
今天我們介紹了2017年提出的DenseNet架構,算是替之前LeNet-5, AlexNet, VGG到ResNet這條路畫上一個句點,讓大家看一下如果根據ResNet的想法往下發展會變成甚麼樣子,當然,CNN還有其他許多的架構與變形,礙於時間因素沒能在這個系列中詳細討論,之後有機會可以陸陸續續慢慢更新上來。
留言
追蹤
檢舉
上一篇
CNN經典論文實戰(四)--Autoencoder
下一篇
CNN經典論文實戰(五)--DenseNet
系列文
AI白話文運動系列之「A!給我那張Image!」
共
30
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
26
AI研究趨勢討論(一)--模型壓縮與加速(Model Compression and Acceleration)前篇
27
AI研究趨勢討論(一)--模型壓縮與加速(Model Compression and Acceleration)後篇
28
AI研究趨勢討論(二)--遷移學習、領域自適應與領域泛化
29
AI研究趨勢討論(三)--強強聯手打造新世代里程碑(CNN與ViT結合)
30
AI研究趨勢討論(四)--AI圖像生成(以Diffusion Model為例)
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22195
篇
完賽人數
600
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
家中獨有一台設備wifi會斷斷續續
請問內網IP如何轉外網IP?
兩端防火牆使用IPSEC互PING之問題
Windows7升級Windows10後網路功能異常
SAMBA加入到WINDOWS AD SERVER的網域後,無法使用CENTOS"本機"帳號進入SAMBA分享的資料夾
python爬蟲 動態生成網頁104人力銀行
區域網路問題提問
vmware 虛擬機(windows)裡顯示使用容量與實際檔案容量不符合
HeidiSQL 查詢結果亂碼問題
如何寫公式才能利用excel 觸發一個數據時傳送一個訊息給 自已的line呢?有沒有可以用其它方式,來取代line notify 的方法,因為line 開始收費
熱門回答
請問內網IP如何轉外網IP?
HeidiSQL 查詢結果亂碼問題
區域網路問題提問
Fortigate 50B 重置密碼
家中獨有一台設備wifi會斷斷續續
熱門文章
每日一篇學習筆記 直到我做完專題 :( [Day29]
每日一篇學習筆記 直到我做完專題 :( [Day30]
每日一篇學習筆記 直到我做完專題 :( [Day31]
每日一篇學習筆記 直到我做完專題 :( [Day32]
Python 進階爬蟲工具 -Selenium : 安裝和使用ChromeDriver
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}